//
//  MCFormDataRequest.h
//  MCToolbox
//
//  Created by J. G. Pusey on 8/4/10.
//  Copyright 2010 MedCommons, Inc. All rights reserved.
//
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are
//  met:
//
//  * Redistributions of source code must retain the above copyright notice,
//    this list of conditions and the following disclaimer.
//  * Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//  * Neither the name of MedCommons, Inc. nor the names of its contributors
//    may be used to endorse or promote products derived from this software
//    without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
//  IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
//  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
//  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
//  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
//  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
//  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

#import "ASIFormDataRequest.h"  // <ASIHTTPRequest/ASIFormDataRequest.h>

//
// Error domains:
//
extern NSString *const MCFormDataRequestErrorDomain;

//
// Error codes (returned in NSError):
//
enum
{
    MCFormDataRequestErrorUnknown             = 2000,
    MCFormDataRequestErrorUnsupportedMIMEType
};

/**
 * The MCFormDataRequest class ...
 */
@interface MCFormDataRequest : ASIFormDataRequest <NSCopying>
{
@private

    NSTimeInterval  finishTime_;
    NSTimeInterval  startTime_;
    NSSet          *supportedUTIs_;
}

@property (assign, readonly)  NSTimeInterval  finishTime;
@property (assign, readonly)  NSTimeInterval  startTime;
@property (copy,   readwrite) NSSet          *supportedUTIs;

- (NSDictionary *) responseDictionary;

- (NSString *) responseMIMEType;

@end

@protocol MCFormDataRequestDelegate <ASIHTTPRequestDelegate>

// Just so the delegate name matches that of the subclass ...

@end

